﻿namespace Acme.Marketing.Data
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    ///     Represents the printed newspaper.
    /// </summary>
    public class Newspaper
    {
        /// <summary>
        ///     Initializes a new instance of the <see cref="Newspaper" /> class.
        /// </summary>
        public Newspaper()
        {
            Advertisements = new List<Advertisement>();
            ExternalGuid = Guid.NewGuid();
        }

        /// <summary>
        ///     Gets or sets the newspaper identifier.
        /// </summary>
        /// <value>
        ///     The newspaper identifier.
        /// </value>
        public long NewspaperId { get; set; }

        /// <summary>
        ///     Gets or sets the external unique identifier used for integration with multiple channel partners.
        /// </summary>
        /// <value>
        ///     The external unique identifier.
        /// </value>
        public Guid ExternalGuid { get; set; }

        /// <summary>
        ///     Gets or sets the publish date of the newspaper.
        /// </summary>
        /// <value>
        ///     The publish date.
        /// </value>
        public DateTime PublishDate { get; set; }

        /// <summary>
        ///     Gets or sets the headline.
        /// </summary>
        /// <value>
        ///     The headline.
        /// </value>
        public string Headline { get; set; }

        /// <summary>
        ///     Gets or sets if the newspaper is available in multiple languages.
        /// </summary>
        /// <value>
        ///     The value if the newspaper is available in multiple languages.
        /// </value>
        public bool? IsAvailableInMultipleLanguages { get; set; }

        /// <summary>
        ///     Gets or sets the number of subscribers.
        /// </summary>
        /// <value>
        ///     The number of subscribers.
        /// </value>
        public int? NumberOfSubscribers { get; set; }

        /// <summary>
        ///     Gets or sets the collection of advertisements that are contained in this newspaper.
        /// </summary>
        /// <value>
        ///     The advertisements contained in this newspaper.
        /// </value>
        public virtual ICollection<Advertisement> Advertisements { get; set; }
    }
}